/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.echarts.component.graphic</p>
 * <p>File:GraphicElement.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 May 14, 2019 12:40:27 PM
 */
package com.cesgroup.zw.spring.boot.echarts.component.graphic.element;

import com.cesgroup.zw.spring.boot.echarts.BasicComponent;
import com.cesgroup.zw.spring.boot.echarts.enums.Action;
import com.cesgroup.zw.spring.boot.echarts.enums.Bounding;
import com.cesgroup.zw.spring.boot.echarts.enums.GraphicType;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>描述: </p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date May 14, 2019 12:40:27 PM
 * @version 1.0.2019
 */
@Data @SuppressWarnings("serial")
@EqualsAndHashCode(callSuper = true)
public abstract class AbstractElement extends BasicComponent {

	private GraphicType type;
	
	@JsonProperty("$action")
	private Action action;
	
	/** 图形元素平移的距离，[default: [0, 0]]，表示 [横向平移的距离, 纵向平移的距离] */
	private Integer[] position;

	/** 图形元素旋转的弧度，[default: 0]，正值表示逆时针旋转 */
	private Integer rotation;
	
	/** 图形元素缩放的倍数，[default: [1, 1]]，表示 [横向缩放的倍数, 纵向缩放的倍数] */
	private Integer[] scale;
	
	/** 图形元素旋转和缩放的中心点，[default: [0, 0]] */
	private Integer[] origin;
	
	/** 组件离容器上侧的距离，[default: null] */
	private Object top;
	
	/** 组件离容器左侧的距离，[default: null] */
	private Object left;
	
	/** 组件离容器右侧的距离，[default: null] */
	private Object right;
	
	/** 组件离容器下侧的距离，[default: null] */
	private Object bottom;
	
	/** 决定此图形元素在定位时，对自身的包围盒计算方式，[default: 'all'] */
	private Bounding bounding;
	
	/** 用户定义的任意数据 */
	private Object info;
	
	/** 是否不响应鼠标以及触摸事件，[default: false] */
	private Boolean silent;
	
	/** 节点是否可见，[default: false] */
	private Boolean invisible;
	
	/** 节点是否完全被忽略，[default: false] */
	private Boolean ignore;

	/** 鼠标悬停样式，[default: 'pointer'] */
	private String cursor;
	
	/** 图形元素是否可以被拖拽，[default: false] */
	private Boolean draggable;
	
	/** 是否渐进式渲染，[default: false] */
	private Boolean progressive;
	
	private Object onclick;
	private Object onmouseover;
	private Object onmouseout;
	private Object onmousemove;
	private Object onmousewheel;
	private Object onmousedown;
	private Object onmouseup;
	private Object ondrag;
	private Object ondragstart;
	private Object ondragend;
	private Object ondragenter;
	private Object ondragleave;
	private Object ondragover;
	private Object ondrop;
}
